package com.hnl.dao;

public abstract class DAOFactory {
	// List of DAO types supported by the factory
	public static final int HNLDAOFACTORY = 1;

	// There will be a method for each DAO that can be
	// created. The concrete factories will have to
	// implement these methods.
	public abstract UserDAO getUserDAO() throws DAOException;

	public abstract ActivityDAO getActivityDAO() throws DAOException;

	public abstract TalentDAO getTalentDAO() throws DAOException;

	public abstract TalentEducationDAO getTalentEducationDAO()
			throws DAOException;

	public abstract RoleDAO getRoleDAO() throws DAOException;

	public abstract FunctionDAO getFunctionDAO() throws DAOException;

	public abstract RoleFunctionDAO getRoleFunctionDAO() throws DAOException;

	public abstract MiscDAO getMiscDAO() throws DAOException;

	public abstract MiscTypeDAO getMiscTypeDAO() throws DAOException;

	public abstract ReferralDAO getReferralDAO() throws DAOException;

	public abstract EducationDAO getEducationDAO() throws DAOException;

	public abstract AttachmentDAO getAttachmentDAO() throws DAOException;

	public static final DAOFactory getDAOFactory(int whichFactory) {
		switch (whichFactory) {
		case HNLDAOFACTORY:
			return new HNLDAOFactory();
		default:
			return null;
		}
	}
}
